For arrays of objects, Arrays.asList(T ... a).stream()
and Arrays.stream(array)
are basically equivalent in terms of
performance. However, for arrays of primitives, using Arrays.asList
will force the construction of a list of boxed types, and then use
that list as a stream. On the other hand, Arrays.stream
uses the appropriate primitive stream type (IntStream
,
LongStream
, DoubleStream
) when applicable, with much better performance.
Noncompliant code example
Arrays.asList("a1", "a2", "b1", "c2", "c1").stream()
.filter(...)
.forEach(...);
Arrays.asList(1, 2, 3, 4).stream() // Noncompliant
.filter(...)
.forEach(...);
Compliant solution
Arrays.asList("a1", "a2", "b1", "c2", "c1").stream()
.filter(...)
.forEach(...);
int[] intArray = new int[]{1, 2, 3, 4};
Arrays.stream(intArray)
.filter(...)
.forEach(...);